Introduction to R
for Social Scientists

Workshop Day 3B | 2022-07-27
Jeffrey M. Girard | Pitt Methods

Model II

Basic Regression

A

B

C

Basic Regression Live Coding

# SETUP: Load the used packages (if needed) and read in the example dataset

library(tidyverse)
library(datawizard)
library(parameters)
library(performance)
library(effects)
library(ggeffects)

salaries <- read_csv("salaries.csv")
salaries

# ==============================================================================

# 

fit <- lm(
  formula = salary ~ yrs.since.phd,
  data = salaries
)

fit

model_parameters(fit)

# Centering the predictor

salaries <- mutate(salaries, yrs.since.phd.c = center(yrs.since.phd))

fit_c <- lm(
  formula = salary ~ yrs.since.phd.c,
  data = salaries
)

model_parameters(fit_c)

# Standardized results

model_parameters(fit, standardize = "refit")

# Model performance

model_performance(fit)

# Plotting

plot(ggeffect(fit, terms = "yrs.since.phd"))

plot(ggeffect(fit, terms = "yrs.since.phd"), add.data = TRUE)

Multiple Regression

A

B

C

Multiple Regression Live Coding

# SETUP: Load the used packages (if needed) and read in the example dataset

library(tidyverse)
library(datawizard)
library(parameters)
library(performance)
library(ggeffects)

salaries <- read_csv("salaries.csv")
salaries

# ==============================================================================

fit2 <- lm(
  formula = salary ~ yrs.since.phd + yrs.service,
  data = salaries
)

model_parameters(fit2)

model_parameters(fit2, standardize = "refit")

model_performance(fit2)

# Plotting marginal effects

plot(ggeffect(fit2, terms = "yrs.since.phd"))

plot(ggeffect(fit2, terms = "yrs.service"))

# Compare to the model with just years since PhD

compare_parameters(fit, fit2)

compare_performance(fit, fit2)

anova(fit, fit2)

Categorical Predictors

A

B

C

Categorical Live Coding

library(tidyverse)
library(datawizard)
library(modelbased)
library(parameters)
library(performance)
library(ggeffects)

salaries <- read_csv("salaries.csv")
salaries

# ==============================================================================

# Example with two levels

fit <- lm(salary ~ sex, data = salaries)

model_parameters(fit)

model_parameters(fit, standardize = "refit")

model_performance(fit)

plot(ggeffect(fit, terms = "sex"))

estimate_means(fit, at = "sex")

# Change the reference group (whatever level is first)

salaries2 <- salaries |> mutate(sex = factor(sex, levels = c("Male", "Female")))

fit2 <- lm(salary ~ sex, data = salaries2)

model_parameters(fit2)

# Example with three levels

fit2 <- lm(salary ~ rank, data = salaries)

model_parameters(fit2)

model_parameters(fit2, standardize = "refit")

model_performance(fit2)

plot(ggeffect(fit2, terms = "rank"))

estimate_means(fit2, at = "rank")

fit2 |> aov() |> model_parameters()

# Example with categorical and continuous predictors

fit3 <- lm(salary ~ rank + yrs.since.phd, 
           data = salaries)

model_parameters(fit3)

model_parameters(fit3, standardize = "refit")

model_performance(fit3)

ggeffect(fit3, terms = c("yrs.since.phd", "rank")) |> plot()

Interaction Effects

A

B

C

Interactions Live Coding

Regression Diagnostics

A

B

C

Diagnostics Live Coding

Polynomial Regression

A

B

C

Polynomial Live Coding

Logistic Regression

A

B

C

Logistic Live Coding

Practice V